The use of communication networks such as the Internet has become widespread. To perform data communication over a network, various protocols can be used. The Transmission Control Protocol (TCP) along with the Internet Protocol (IP) are the core protocols of the Internet Protocol Suite. The Internet Protocol handles lower-level transmissions from router to router as a message makes its way across the Internet. TCP operates at a higher level and operates with end systems, for example a Web browser and a Web server.
Network resources are limited (e.g. processing time, link throughput, memory, etc.) and network congestion can occur. Various schemes for avoiding network congestion have been tried. Network congestion avoidance in such schemes was implemented by dropping communication session packets as network traffic reached or nearly reached congestion levels. These network congestion avoidance schemes are typically implemented with respect to one or more nodes in the network such as within routers, switches, gateways, and servers.
TCP has a congestion-avoidance feature whereby when a packet/frame is dropped due to congestion, the source of the packet (sending side) reduces its sending rate (e.g. by half) thereby reducing the congestion that is assumed to have cause the packet being dropped. After reducing the sending rate in one large step, TCP allows the source to accelerate its sending rate gradually until the next time a packet is dropped/lost, and so on. When many TCP flows (e.g. senders) pass through a common queue that becomes congested, the queue drops all packets seen in close succession, and in a short period of time, drops packets belonging to many separate TCP flows. Each TCP flow independently reduces its sending rate, but the result is that all the affected TCP senders start the congestion-avoidance at about the same time. Thus they all reduce their sending rate together and cause the congestion to be resolved. But then all TCP flows accelerate together. If conditions are approximately equal for all TCP flows, they all accelerate at the same rate and will again reach the point where the common queue is congested causing all the TCP flows to again lose packets at the same time. This cycle can then repeat. This condition or phenomena is commonly referred to as “global TCP loss synchronization.” This condition may be harmful in terms of under-utilization of an available link bandwidth and in terms of the level of service provided to each TCP connection.
Some techniques have been used to mitigate global TCP loss synchronization. For example, random early detection or drop (RED) operates to prevent network congestion by dropping packets before a networking device's buffer capacity is full. Weighted random early detection or drop (WRED) operates to prevent network congestion by dropping packets similar to RED, but adds weighting in packet dropping decision making to accommodate quality of service applications. However, these techniques require frames to be dropped before they have to be dropped. A different way for mitigating global TCP loss synchronization may be desired.